# qwen_advisor.py
import dashscope
from dashscope import Generation
import os

# 设置 API Key
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY", "sk-你的-api-key-here")

def generate_optimization_advice(transaction_data, sql="", explain_output=""):
    """
    调用通义千问，生成长事务优化建议
    """
    prompt = f"""
    你是一个资深数据库专家，请分析以下数据库事务是否存在性能风险，并给出具体优化建议。

    【事务信息】
    - 执行时长：{transaction_data.get('duration_sec', 0):.2f} 秒
    - 锁等待时间：{transaction_data.get('wait_time_ms', 0)} 毫秒
    - 影响行数：{transaction_data.get('rows_affected', 0)} 行
    - 锁数量：{transaction_data.get('lock_count', 1)} 个

    【SQL 语句】
    {sql}

    【执行计划（EXPLAIN）】
    {explain_output}

    请回答：
    1. 是否存在长事务风险？为什么？
    2. 可能的原因是什么？（如：缺少索引、大事务、锁竞争等）
    3. 给出 3 条具体、可操作的优化建议
    4. 建议用中文，简洁明了，适合发给开发人员
    """

    try:
        response = Generation.call(
            model="qwen-plus",  # 也可用 qwen-max（更强）、qwen-turbo（更快）
            prompt=prompt,
            temperature=0.5,
            max_tokens=1024
        )

        if response.status_code == 200:
            return response.output.text.strip()
        else:
            return f"❌ 调用 Qwen 失败: {response.code} - {response.message}"

    except Exception as e:
        return f"❌ 请求异常: {str(e)}"